# 配置日志输出
import logging
from logging.handlers import RotatingFileHandler
from functools import wraps

# """
# 日志等级(level)
# DEBUG	    详细信息，只有诊断问题时才需要，就是一般的调试信息
# INFO	    当程序运行时期望的一些信息
# WARNING	    软件运行正常，但是可能会有一些预期之外的事件发生
# ERROR	    由于一些严重问题导致软件一些功能出现问题
# CRITICAL	很严重的错误直接导致软件不能继续运行
# """
# """
# 格式化参数(format)
# %（acstime)s 时间
# %（filename)s 日志文件名
# %（funcName)s 调用日志的函数名
# %（levelname)s 日志的级别
# %（module)s 调用日志的模块名
# %（message)s 日志信息
# %（name)s logger的name，不写的话默认是root
# """
# log_filename = 'main_err.log'
# # max_bytes = 1024 * 10  # 最大文件大小（1MB）
# # backup_count = 5  # 保留文件的个数
#
# # 定义全局变量my_logger，方便在其他地方调用输出日志
# logging.basicConfig(
#     level=logging.DEBUG,
#     filemode='a',
#     filename=log_filename,
#     encoding='utf-8',
#     format='%(asctime)s \n %(name)s - %(levelname)s \n %(module)s - %(lineno)d \n %(message)s \n'
# )
# # file_handler = RotatingFileHandler(log_filename, maxBytes=max_bytes, backupCount=backup_count)
# # file_handler.setLevel(logging.DEBUG)
# # 将文件处理程序添加到日志记录器
#
# my_logger = logging.getLogger('root')
# # my_logger.addHandler(file_handler)



# 定义一个全局的日志装饰器
def log_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        args[0].queue_logging.put([1, 0, f"Entering {func.__name__} with args={args}, kwargs={kwargs}"])
        result = func(*args, **kwargs)
        args[0].queue_logging.put([1, 0, f"Exiting {func.__name__} with result={result}"])
        return result
    return wrapper
